package 懒汉式;

/**
 * 静态内部类是一种优秀的单例创建对象方式，是开源框架中用的最多的一种方式
 * 静态内部类的方式实现单例对象的创建
 *  静态内部类可以实现 "懒汉式" 方式创建单例对象的原因是因为 JVM 在加载外部类
 *  的时候不会加载静态内部类的，只有静态内部类的属性或者方法被调用时才会被加载，
 *  所以我们调用外部类的公共静态方法创建单例对象时去调用静态内部类的属性才会创建对象
 *
 *  注意：序列化和反序列化可以破坏单例模式
 */
public class Singleton3 {

    //私有化构造器
    private Singleton3(){}

    //定义为final，防止外部类调用
    private static class SingletonHolder{
        //防止别人修改，我们定义为final
        private static  final Singleton3 INSTANCE=new Singleton3();
    }

    public static Singleton3 getInstance(){
        return SingletonHolder.INSTANCE;
    }
}
